<template>
  <view class="page-container">
    <!-- 加载中 -->
    <view class="loading-container">
      <image class="loading-icon" src="/static/icons/loading.gif"></image>
      <text class="loading-text">正在打开地图...</text>
    </view>
  </view>
</template>

<script setup>
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import CustomHeader from "@/components/CustomHeader.vue"

// 响应式数据
const currentLatitude = ref(0)
const currentLongitude = ref(0)

// 页面加载
onLoad(() => {
  // 直接打开地图选择
  openMapPicker()
})

// 返回上一页
const goBack = () => {
  uni.navigateBack()
}

// 直接打开地图选择
const openMapPicker = () => {
  // 先获取当前位置作为默认位置
  uni.getLocation({
    type: 'gcj02',
    success: (res) => {
      // 获取位置成功后打开地图
      openLocationPicker(res.latitude, res.longitude)
    },
    fail: (error) => {
      console.error('获取位置失败:', error)
      // 即使获取位置失败也打开地图
      openLocationPicker()
    }
  })
}

// 打开位置选择器
const openLocationPicker = (latitude, longitude) => {
  const options = {}
  
  // 如果有位置信息，设置为默认位置
  if (latitude && longitude) {
    options.latitude = latitude
    options.longitude = longitude
  }
  
  uni.chooseLocation({
    ...options,
    success: (res) => {
      const address = {
        name: res.name,
        address: res.address,
        latitude: res.latitude,
        longitude: res.longitude
      }
      
      selectAddress(address)
    },
    fail: (error) => {
      console.error('选择位置失败:', error)
      
      // 如果用户取消，返回上一页
      if (error.errMsg && error.errMsg.indexOf('cancel') !== -1) {
        uni.navigateBack()
      } else {
        uni.showToast({
          title: '选择位置失败',
          icon: 'none'
        })
        // 延迟返回上一页
        setTimeout(() => {
          uni.navigateBack()
        }, 1500)
      }
    }
  })
}

// 选择地址
const selectAddress = (address) => {
  // 本地存储
  uni.setStorageSync('selectedAddress', address)
  
  // 事件传递（双重保险）
  uni.$emit('addressSelected', address)
  
  // 返回上一页
  uni.navigateBack()
}
</script>

<style lang="scss" scoped>
.page-container {
  min-height: 100vh;
  background-color: #f5f5f5;
  display: flex;
  align-items: center;
  justify-content: center;
}

.loading-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 30rpx;
}

.loading-icon {
  width: 80rpx;
  height: 80rpx;
}

.loading-text {
  font-size: 28rpx;
  color: #666;
}
</style>